/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.pb138.videodes.impl;

import cz.muni.fi.pb138.videodes.entity.Genre;
import cz.muni.fi.pb138.videodes.entity.Movie;
import java.util.List;

/**
 *
 * @author pseudo
 */
public interface MovieManager {
    
    /**
     * Stores movie in the database.
     * 
     * @param movie stored movie
     */
    public void add(Movie movie);

    /**
     * Removes movie from the database.
     * 
     * @param movie removed movie
     */
    public void remove(Movie movie);
    
    /**
     * Update movie stored in the database.
     * 
     * @param movie updated movie
     */
    public void update(Movie movie);

    /**
     * Gets all movies from the database.
     * 
     * @return List of all movies that are stored in the database.
     */
    public List<Movie> getAllMovies();

    /**
     * Gets a movie depending on the given ID.
     * 
     * @param id id of the movie
     * @return return movie with the given ID
     */
    public Movie getMovieById(String id);

    /**
     * Gets movies depending on the given genre.
     * 
     * @param genre
     * @return List of movies with the given genre retrieved from the database.
     */
    public List<Movie> getMoviesByGenre(Genre genre);
}
